10 SCREEN 1:COLOR 1,0:CLS:RANDOMIZE CVD(TIME$):KEY OFF:CLEAR 100:DEFINT I-S: DIM IB(7,6),N$(2),IR(4),IS(7)
20 CLS:LOCATE 2,1:PRINT " CONNECT-4": PRINT : PRINT " This game can be played between":PRINT :PRINT " two people, or between one person,":PRINT :PRINT " and the IBM-PC":
30 PRINT : PRINT " Which option do you want":PRINT :INPUT "(I=IBM-PC or 2=Two people)";IN$
40 IF IN$="I" OR IN$="i" THEN II=1: GOTO 200
50 IF IN$="2" THEN II=2: GOTO 70
60 GOTO 10
70 PRINT : INPUT " First player's name";N$(1):PRINT : PRINT " You are the GREEN Pieces"
80 PRINT :INPUT " Second player's name";N$(2):PRINT : PRINT " You will be the RED Pieces"
90 FOR I=1 TO 3000: NEXT I
100 GOSUB 510:IX=0
110 IX=IX+1
120 IF IX<43 THEN GOTO 140
130 CLS :LOCATE 10,12: PRINT "Tie Game!!!!": FOR I=1 TO 2000: NEXT : GOTO 430
140 MD=IX/2: IF MD*2=IX THEN IO=2 ELSE IO=1
150 LOCATE 24,2: PRINT N$(IO);", Your move ";:IN$=""
160 IN$=INKEY$: IF LEN(IN$)=0 THEN GOTO 160
170 IN=VAL(IN$): IF IN<1 OR IN>7 THEN GOTO 150
180 IF IB(IN,1)<>0 THEN GOTO 150
190 GOSUB 580: GOSUB 740: GOTO 110
200 PRINT : INPUT " What's your name";N$(1):PRINT : PRINT " You will be the GREEN Pieces"
210 FOR I=1 TO 3000: NEXT
220 GOSUB 510:IK=0
230 IK=IK+1: IF IK<43 THEN GOTO 250
240 CLS :LOCATE 24,2: PRINT "We TIED!!!" ;: FOR I=1 TO 3000: NEXT : GOTO 480
250 MD=IK/2: IF MD*2=IK THEN IO=2 ELSE IO=1
260 IF IO=2 THEN GOTO 330
270 LOCATE 24,2:PRINT N$(1);", Your move";: N$(2)="I"
280 IN$=INKEY$: IF LEN(IN$)=0 THEN GOTO 280
290 IN=VAL(IN$): IF IN<1 OR IN>7 THEN GOTO 270
300 IF IB(IN,1)<>0 THEN GOTO 270
310 LOCATE 24,1:PRINT " ";
320 GOSUB 580: GOSUB 740: GOTO 230
330 IF IK=2 THEN HX=INT(RND*7): GOTO 405
340 HI=0:HJ=1:HX=4: FOR IX=1 TO 7: GOSUB 1020
350 IF IS(IX)>HI THEN HI=IS(IX):HX=IX:HJ=JX
360 NEXT IX: IF HI=>625 THEN GOTO 410
370 IB(HX,HJ)=2
380 IX=HX: GOSUB 1020:IB(HX,HJ)=0: IF IS(IX)=>3125 GOTO 410
390 IF IS(IX)<625 THEN GOTO 410
400 HX=INT(RND*7): IF IB(HX,1)<>0 THEN GOTO 400
405 HX = INT(RND*7):IF HX = 0 THEN GOTO 405
410 IN=HX: GOSUB 580: GOSUB 740
420 GOTO 230
430 FOR I=1 TO 2000: NEXT I
440 CLS : INPUT "Do you want to play again";IN$
450 A$=N$(1):N$(1)=N$(2):N$(2)=A$
460 IF IN$="N" OR IN$="n" THEN SYSTEM ELSE GOTO 465
465 INPUT"Same players? (Return = Yes or NO)";Z$:IF LEFT$(Z$,1)="N" OR LEFT$(Z$,1)="N" THEN GOTO 70 ELSE GOTO 100
470 SYSTEM
480 CLS : INPUT "How about another game";IN$
490 IF IN$="Y" OR IN$="y" THEN GOTO 220
500 SYSTEM
510 CLS :P=3: FOR I=1 TO 7: LOCATE 1,P:PRINT I;:P=P+5: NEXT
520 FOR I=47 TO 288 STEP 40: FOR J=10 TO 136 STEP 21:PSET(I,J),3: NEXT J,I
530 FOR I=12 TO 291 STEP 40: FOR J=10 TO 136 STEP 21:PSET(I,J),3: NEXT J,I
540 X=8:Y=11:FOR I = 1 TO 8:LINE(X,10)-(Y,136),,BF:X =X + 40:Y = Y + 40:NEXT I
550 LINE(7,136)-(292,138),,BF
560 FOR I=1 TO 7: FOR J=1 TO 6:IB(I,J)=0: NEXT J,I
565 X=8:Y=11:FOR I = 1 TO 8:LINE(X,10)-(Y,136),,BF:X =X + 40:Y = Y + 40:NEXT I
570 RETURN
580 FOR J=1 TO 6: IF IB(IN,J)=0 THEN JN=J: NEXT J
590 IL=IN*40-10: IF IO=2 GOTO 650
600 IB(IN,JN)=1:JL=JN*21-1
635 CIRCLE (IL,JL),12,1:PAINT(IL,JL),1
640 GOTO 730
650 IB(IN,JN)=2:JL=JN*21-1
660 CIRCLE (IL,JL),12,2:PAINT(IL,JL),2
730 RETURN
740 IF JN>3 THEN GOTO 790
750 IC=0:J=JN
760 IF IB(IN,J)=IO THEN IC=IC+1 ELSE IC=0
770 IF IC=4 THEN GOTO 960
780 J=J+1: IF J<7 THEN GOTO 760
790 IC=0: FOR I=1 TO 7: IF IB(I,JN)=IO THEN IC=IC+1 ELSE IC=0
800 IF IC=4 THEN GOTO 960
810 NEXT
820 IC=0:IL=IN:JL=JN
830 IF IL=1 OR JL=6 THEN GOTO 850
840 IL=IL-1:JL=JL+1: GOTO 830
850 IF IB(IL,JL)=IO THEN IC=IC+1 ELSE IC=0
860 IF IC=4 THEN GOTO 960
870 IL=IL+1:JL=JL-1: IF IL>7 OR JL<1 THEN GOTO 890
880 GOTO 850
890 IC=0:IL=IN:JL=JN
900 IF IL=1 OR JL=1 THEN GOTO 920
910 IL=IL-1:JL=JL-1: GOTO 900
920 IF IB(IL,JL)=IO THEN IC=IC+1 ELSE IC=0
930 IF IC=4 THEN GOTO 960
940 IL=IL+1:JL=JL+1: IF IL>7 OR JL>6 THEN GOTO 1010
950 GOTO 920
960 FOR I=1 TO 10:LOCATE 24,2: PRINT N$(IO);" WON!!!!!!!";:
970 FOR J=1 TO 200: NEXT J
980 LOCATE 24,1:PRINT " ";: NEXT I
990 IF II=1 THEN GOTO 480
1000 GOTO 430
1010 RETURN
1020 IS(IX)=0:J=0: IF IB(IX,1)<>0 THEN GOTO 1370
1030 J=J+1: IF J>6 GOTO 1060
1040 IF IB(IX,J)=0 THEN JX=J
1050 GOTO 1030
1060 JA=JX+3
1070 IF JA>6 THEN JA=JA-1: GOTO 1070
1080 IF JA<3 THEN GOTO 1120
1090 IF JA<JX THEN GOTO 1120
1100 I=0: FOR J=JA TO JA-3 STEP -1:I=I+1:IR(I)=IB(IX,J): NEXT J